<?php
include_once('inc/functions.inc.php');

if(!isEmpty(getParam('operation'))) {
    
    switch(getParam('operation')) {
        case 'e': {
            fntCxpContabilizacionEmpresas($db);
            break;
        }
        case 'f': {
            fntCxpContabilizacionFacturas($db);
            break;
        }
        case 'p': {
            fntCxpContabilizacionPartida($db);
            break;
        } 
        case 's': {
            fntCxpContabilizacionGrabar($db);
            break;
        }
    }
    die();
}

function fntCxpContabilizacionEmpresas($db) {
    fntEmpresasDraw($db, "sltCxpContabilizacionEmpresas");
    ?>
    <script type="text/javascript">
    $("select[name='sltCxpContabilizacionEmpresas']").change( function() {
        fntCxpContabilizacionFacturas();
        var objInterface = $("#divCxpContabilizacionPartida");
        objInterface.html("");
    });
    </script>
    <?php
}
function fntCxpContabilizacionFacturas($db) {
    
    $intEmpresa = getParam("sltCxpContabilizacionEmpresas");
    $strWhere = "";
    $strQuery = "SELECT cllg_cp_factura.ID, 
                        IF(SERIE = '', NUMERO, CONCAT(SERIE, ' - ', NUMERO) ) AS NUMERO, 
                        cllg_cp_factura.TIPO_DOCTO,
                        cllg_cp_proveedor.RAZON_SOCIAL AS PROVEEDOR, 
                        cllg_cp_factura.FK_PROVEEDOR, 
                        cllg_cp_factura.TOTAL, 
                        DATE_FORMAT(cllg_cp_factura.FECHA, '%d-%m-%Y') AS FECHA, 
                        DATE_FORMAT(cllg_cp_factura.FECHA_PAGO, '%d-%m-%Y') AS FECHA_PAGO, 
                        cllg_cp_factura.CONTRASENA
                 FROM   cllg_cp_factura,
                        cllg_cp_proveedor 
                 WHERE  cllg_cp_factura.FK_PROVEEDOR = cllg_cp_proveedor.NIT
                 AND    cllg_cp_factura.FK_EMPRESA = '{$intEmpresa}' 
                 AND    cllg_cp_factura.CONTRASENA IS NOT NULL 
                 AND    cllg_cp_factura.ESTADO = 1
                 ORDER  BY cllg_cp_proveedor.RAZON_SOCIAL, cllg_cp_factura.CONTRASENA";
    $qTMP = $db->query($strQuery);
    $intNumRows = $db->num_rows;
    ?>
    <div style="width: 800px; float: left;">
    <div style="width: 800px; float: left">&nbsp;</div>
    <div style="width: 800px; float: left;">
        <div style="width: 100px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Número de factura</b></div>
        <div style="width: 80px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Tipo de documento</b></div>
        <div style="width: 210px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Proveedor</b></div>
        <div style="width: 100px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Valor</b></div>
        <div style="width: 80px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Fecha</b></div>
        <div style="width: 80px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Fecha de pago</b></div>
        <div style="width: 100px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;"><b>Número de contraseña</b></div>
        <div style="width: 30px; height: 40px; float: left; text-align: center; border-bottom: 1px solid black;">&nbsp;</div>
    </div>
    <?php
    if( $intNumRows > 0 ) {
        ?>
        <div style="width: 800px; height: 150px; overflow: auto; float: left;">
        <?php
        while ( $rTMP = $db->fetch_array($qTMP) ) { 
            ?>
            <div style="width: 100px; height: 30px; float: left; text-align: center;"><?php print $rTMP["NUMERO"]; ?></div>
            <div style="width: 80px; height: 30px; float: left; text-align: center;"><?php print $rTMP["TIPO_DOCTO"]; ?></div>
            <div style="width: 210px; height: 30px; float: left; text-align: center;"><?php print $rTMP["PROVEEDOR"]; ?></div>
            <div style="width: 100px; height: 30px; float: left; text-align: right;">L&nbsp;<?php print number_format($rTMP["TOTAL"], 2); ?></div>
            <div style="width: 80px; height: 30px; float: left; text-align: center;"><?php print $rTMP["FECHA"]; ?></div>
            <div style="width: 80px; height: 30px; float: left; text-align: center;"><?php print $rTMP["FECHA_PAGO"]; ?></div>
            <div style="width: 100px; height: 30px; float: left; text-align: center;"><?php print $rTMP["CONTRASENA"]; ?></div>
            <div style="width: 30px; height: 30px; float: left; text-align: center;"><input type="radio" name="radCxpContabilizacionID" value="<?php print $rTMP["ID"]; ?>"></div>
            <?php    
        }
        ?>
        </div>
        <div style="width: 800px; height: 30px;">&nbsp;</div>
        <script type="text/javascript">
        $(function() {
            $("input[name='radCxpContabilizacionID']").change( function(){
                fntCxpContabilizacionPartida();
            });
        });
        </script>
        <?php
        
    }
    else {
        ?>
        <div style="width: 800px; float: left;">
            <div class="ui-widget" style="width: 800px; height: auto;" align="center">
                <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 500px;"> 
                    <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                    No se encontraron registros.
               </div>
            </div>
        </div>
        <?php        
    }
    $db->free_result($qTMP);
    ?>
    </div>
    <?php    
    
}
function fntCxpContabilizacionPartida($db) {
    
    $intEmpresa = getParam("sltCxpContabilizacionEmpresas");
    $intID = getParam("radCxpContabilizacionID");
    $arrInfo = array();
    ?>
    <script type="text/javascript" language="javascript">
    var intEmpresa = '<?php print $intEmpresa; ?>';
    </script>
    <?php
    $strQuery = "SELECT cllg_cp_factura.ID, 
                        IF(SERIE = '', NUMERO, CONCAT(SERIE, ' - ', NUMERO) ) AS NUMERO, 
                        cllg_cp_factura.TIPO_DOCTO,
                        cllg_cp_proveedor.RAZON_SOCIAL AS PROVEEDOR, 
                        cllg_cp_factura.FK_PROVEEDOR, 
                        cllg_cp_factura.MONTO, 
                        cllg_cp_factura.TOTAL, 
                        cllg_cp_factura.INC_IVA, 
                        cllg_cp_factura.DESCRIPCION, 
                        DATE_FORMAT(cllg_cp_factura.FECHA, '%d-%m-%Y') AS FECHA, 
                        DATE_FORMAT(cllg_cp_factura.FECHA_PAGO, '%d-%m-%Y') AS FECHA_PAGO, 
                        cllg_cp_factura.CONTRASENA,
                        cllg_cp_proveedor.FK_CTA_CONTA_CP,
                        cllg_cp_proveedor.FK_CTA_CONTA_IVA
                 FROM   cllg_cp_factura,
                        cllg_cp_proveedor 
                 WHERE  cllg_cp_factura.FK_PROVEEDOR = cllg_cp_proveedor.NIT
                 AND    cllg_cp_factura.FK_EMPRESA = '{$intEmpresa}' 
                 AND    cllg_cp_factura.CONTRASENA IS NOT NULL 
                 AND    cllg_cp_factura.ESTADO = 1
                 AND    cllg_cp_factura.ID = '{$intID}'
                 ORDER  BY cllg_cp_proveedor.RAZON_SOCIAL, cllg_cp_factura.CONTRASENA";
    $qTMP = $db->query($strQuery);
    while ( $rTMP = $db->fetch_array($qTMP) ) { 
        $arrInfo = $rTMP;    
    }
    $db->free_result($qTMP);
    $arrAjuste = array();
    if( $arrInfo["INC_IVA"] == 1 ) {
        $sinMonto = floatval($arrInfo["TOTAL"]) / 1.12;
    }
    else {
        $sinMonto = floatval($arrInfo["TOTAL"]);
    }
    $sinMonto = mround($sinMonto, 2);
    $strQuery = "SELECT * 
                 FROM   cllg_contab_cuenta 
                 WHERE  fk_empresa = '{$intEmpresa}'
                 AND    codigo = '{$arrInfo["FK_CTA_CONTA_CP"]}'";
    $qTMP = $db->query($strQuery);
    while ( $rTMP = $db->fetch_array($qTMP) ) { 
        $arrAjuste["D".$rTMP["codigo"]]["codigo"] = $rTMP["codigo"];    
        $arrAjuste["D".$rTMP["codigo"]]["nombre"] = $rTMP["nombre"];
        $arrAjuste["D".$rTMP["codigo"]]["tipo"] = "h";    
        $arrAjuste["D".$rTMP["codigo"]]["monto"] = $sinMonto;    
    }
    $db->free_result($qTMP);
    
    if( $arrInfo["INC_IVA"] == 1 ) {
        $sinMonto = floatval($arrInfo["TOTAL"]) / 1.12;
        $sinMonto = floatval($arrInfo["TOTAL"]) - $sinMonto;
        $sinMonto = mround($sinMonto, 2);
        $strQuery = "SELECT * 
                     FROM   cllg_contab_cuenta 
                     WHERE  fk_empresa = '{$intEmpresa}'
                     AND    codigo = '{$arrInfo["FK_CTA_CONTA_IVA"]}'";
        $qTMP = $db->query($strQuery);
        while ( $rTMP = $db->fetch_array($qTMP) ) { 
            $arrAjuste["D".$rTMP["codigo"]]["codigo"] = $rTMP["codigo"];    
            $arrAjuste["D".$rTMP["codigo"]]["nombre"] = $rTMP["nombre"];    
            $arrAjuste["D".$rTMP["codigo"]]["tipo"] = "h";    
            $arrAjuste["D".$rTMP["codigo"]]["monto"] = $sinMonto;    
        }
        $db->free_result($qTMP);
    }
    ?>
    <div style="width: 800px; float: left;">
    <div style="width: 800px; float: left;">&nbsp;</div>
    <div style="width: 800px; float: left; text-align: center;"><b>Distribución contable</b></div>
    <div style="width: 800px; float: left;">&nbsp;</div>
    <div style="width: 100px; float: left">&nbsp;</div>
    <div style="width: 600px; float: left;">
        <input type="hidden" name="hdnCxpContabilizacionFecha" value="<?php print $arrInfo["FECHA"]; ?>">
        <input type="hidden" name="hdnCxpContabilizacionValor" value="<?php print $arrInfo["TOTAL"]; ?>">
        <input type="hidden" name="hdnCxpContabilizacionMonto" value="<?php print $arrInfo["MONTO"]; ?>">
        <input type="hidden" name="hdnCxpContabilizacionConcepto1" value="<?php print $arrInfo["DESCRIPCION"]; ?>">
        <b>Descripción</b><br>
        <textarea name="hdnCxpContabilizacionConcepto" style="width: 100%"><?php print $arrInfo["DESCRIPCION"]; ?></textarea>
    </div>
    <div style="width: 100px; float: left">&nbsp;</div>
    <div style="width: 800px; float: left">&nbsp;</div>
    <div style="width: 800px; height: auto; float: left; text-align: center;">
        <div id="frmPartidas-detalle" style="width: 800px; float: left;">
            <div style="float: left; width: 400px; height: 30px; border-bottom: 1px solid black;"><b>Cuenta</b></div>
            <div style="float: left; width: 200px; height: 30px; border-bottom: 1px solid black; text-align: center;"><b>Debe</b></div>
            <div style="float: left; width: 200px; height: 30px; border-bottom: 1px solid black; text-align: center;"><b>Haber</b></div>
            <div style="float: left; width: 400px; height: 10px;">&nbsp;</div>
            <div style="float: left; width: 200px; height: 10px;">&nbsp;</div>
            <div style="float: left; width: 200px; height: 10px;">&nbsp;</div>
        </div>
        <div id="frmPartidas-totales" style="width: 800px; float: left;">
            <div style="float: left; width: 400px; height: 10px; border-collapse: separate; border-bottom: 1px solid black;">&nbsp;</div>
            <div style="float: left; width: 200px; height: 10px; border-collapse: separate; border-bottom: 1px solid black;">&nbsp;</div>
            <div style="float: left; width: 200px; height: 10px; border-collapse: separate; border-bottom: 1px solid black;">&nbsp;</div>
            <div style="float: left; width: 400px; height: 30px; margin-top: 5px; text-align: right;"><b>Totales</b></div>
            <div style="float: left; width: 200px; height: 30px; margin-top: 5px;"><input type="text" name="txtTotalDebe" id="txtTotalDebe" value="" style="text-align: right;" readonly="readonly"></div>
            <div style="float: left; width: 200px; height: 30px; margin-top: 5px;"><input type="text" name="txtTotalHaber" id="txtTotalHaber" value="" style="text-align: right;" readonly="readonly"></div>
        </div>
    </div>
    <div style="width: 800px; height: 40px; float: left; text-align: center;">
        &nbsp;
    </div>
    <div style="width: 800px; height: 40px; float: left; text-align: center;">
        <button type="button" id="btnCxpContabilizacionGrabar">Grabar</button>
    </div>
    <script type="text/javascript">
    $( function() {
        
        $("#btnCxpContabilizacionGrabar").button({
            icons: {
                primary: "ui-icon-disk"
            }
        }).click( function () {
            fntCxpContabilizacionGrabar();
        }).button( "disable" );

        <?php
        reset($arrAjuste);
        $i = 1;
        while($arrTMP = each($arrAjuste) ) {
            ?>
            intCorrelativo = <?php print $i; ?>;
            drawNewLine(intCorrelativo, "<?php print $arrTMP["value"]["codigo"]; ?>", "<?php print $arrTMP["value"]["nombre"]; ?>", "<?php print $arrTMP["value"]["tipo"]; ?>", "<?php print $arrTMP["value"]["monto"]; ?>" );
            <?php
            $i++;
        }
        ?>
        intCorrelativo = <?php print $i; ?>;
        drawNewLine(intCorrelativo);
        
    });
    </script>

    </div>
    <?php
    
}
function fntCxpContabilizacionGrabar($db) {

    $intEmpresa = getParam("sltCxpContabilizacionEmpresas");
    $intFacturaID = getParam("radCxpContabilizacionID");
    $valor = getParam("hdnCxpContabilizacionValor");
    $arrfecha = explode("-", getParam("hdnCxpContabilizacionFecha"));
    $fecha = $arrfecha[2]."-".$arrfecha[1]."-".$arrfecha[0];
    $concepto = getParam("hdnCxpContabilizacionConcepto");
    
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    total_activo > 0 
                 AND    total_pasivo > 0
                 AND    fk_empresa = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCerrado = $db->num_rows;
    $db->free_result($qTMP);
    
    $strQuery = "SELECT * 
                 FROM   cllg_contab_ciclo 
                 WHERE  activo = '1' 
                 AND    fecha_inicio <= '{$fecha}' 
                 AND    fecha_fin >= '{$fecha}'
                 AND    fk_empresa = '{$intEmpresa}'";
    $qTMP = $db->query($strQuery);
    $intCicloCorrecto = $db->num_rows;
    $db->free_result($qTMP);
    
    if( $intCicloCerrado > 0 ) {
        
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 800px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                No se puede ingresar partida en una fecha ya cerrada.</p>
           </div>
        </div>
        <br>
        <?php
        
    }
    else if( $intCicloCorrecto == 0 ) {
        
        ?>
        <div class="ui-widget" style="border: 0px solid white; width: 800px; height: auto; vertical-align: bottom;" align="center">
            <div class="ui-state-error ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 450px;"> 
                <span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"></span>
                La fecha de la partida no esta configurada.
           </div>
        </div>
        <br>
        <?php
        
    }
    else {
    
        $strQuery = "SELECT * FROM cllg_contab_ciclo WHERE activo = '1' AND fk_empresa = '{$intEmpresa}'";
        $qTMP = $db->query($strQuery);
        $intNumRows = $db->num_rows;
        $rTMP = $db->fetch_array($qTMP);
        $intCiclo = $rTMP["codigo"];
        $db->free_result($qTMP);
        if( $intNumRows > 0 ) {
            
            $strQuery = "INSERT INTO cllg_contab_ajuste 
                         (id, fecha, monto, ciclo, descripcion)
                         VALUES
                         (NULL, '{$fecha}', {$valor}, '{$intCiclo}', '{$concepto}')";
            $db->query($strQuery);                     
            $intID = mysql_insert_id ( $db->link_id );
            
            if( $intID > 0 ) {
                
                while ( $arrPost = each($_POST) ) {
                    
                    $arrExplode = explode("_", $arrPost["key"]);
                    
                    if( $arrExplode[0] == "hdnCuenta" && $arrPost["value"] > 0 ) {
                        
                        $debe = getParam("txtDebe_".$arrExplode[1]);
                        $haber = getParam("txtHaber_".$arrExplode[1]);
                        if( $debe > 0 && $haber == 0 ) {
                            $monto = $debe;
                            $debe = 1;
                            $haber = 0;
                        }
                        else if( $debe == 0 && $haber > 0 ) {
                            $monto = $haber;
                            $debe = 0;
                            $haber = 1;
                        }
                        $strQuery = "INSERT INTO cllg_contab_cuenta_ajuste 
                                     (cuenta, debe, haber, monto, ajuste)
                                     VALUES
                                     ('{$arrPost["value"]}', '{$debe}', '{$haber}', '{$monto}', '{$intID}')";
                        $db->query($strQuery);
                        
                    }                    
                    
                }
                
                $db->query("UPDATE cllg_cp_factura SET ESTADO = '2', FK_AJUSTE = '{$intID}' WHERE ID = '{$intFacturaID}'");
                ?>
                <div class="ui-widget" style="border: 0px solid white; width: 900px; height: auto; vertical-align: bottom;" align="center">
                   <div class="ui-state-highlight ui-corner-all" style="margin-top: 0px; padding: 0pt 0.7em; height: auto; width: 220px;"> 
                        <span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span>
                        Partida ingresada No. <?php print $intID; ?>
                   </div>
                </div>
                <br>
                <script type="text/javascript" language="javascript">
                fntCxpContabilizacionFacturas();
                var objInterface = $("#divCxpContabilizacionPartida");
                objInterface.html("");
                </script>
                <?php 
                
            }
        }
    }
            
}
function mround($number, $precision=0) { 
    
    $precision = ($precision == 0 ? 1 : $precision);    
    $pow = pow(10, $precision); 
    
    $ceil = ceil($number * $pow)/$pow; 
    $floor = floor($number * $pow)/$pow; 
    
    $pow = pow(10, $precision+1); 
    
    $diffCeil     = $pow*($ceil-$number); 
    $diffFloor     = $pow*($number-$floor)+($number < 0 ? -1 : 1); 
    
    if($diffCeil >= $diffFloor) return $floor; 
    else return $ceil; 
}
?>